package com.skycode7.dao;

import com.skycode7.bean.AdminBean;
import com.skycode7.util.DBConnection;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class AdminDao {
    /**
     * 添加新闻
     * @param admin
     * @return
     */
    DBConnection db = new DBConnection();

    public int add(AdminBean admin) {


        Connection conn = db.getConn(); //Conn代表mysql连接
        String sql = "insert into admin values(null,?,?,?,?)"; // 使用jdbc预处理对象添加
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            //将新闻数据对象中数据依次绑定到sql命令中
            ps.setString(1, admin.getAdminName());
            ps.setString(2, admin.getAdminPwd());
            ps.setString(3, admin.getAdminType());
            ps.setString(4, admin.getLastLoginTime());
            return ps.executeUpdate(); //执行sql命令完成数据插入
        } catch (SQLException e) {
            System.out.print("插入news表异常");
        }
        return 0;//如果添加异常 返回0
    }

    /**
     * 删除功能
     * @param AdminID
     * @return
     */
    public int delete(int AdminID) {
        Connection conn = db.getConn();
        String sql = "delete from admin where AdminID = ?";
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, AdminID);
            return ps.executeUpdate(); //执行删除命令 返回删除受影响行
        } catch (SQLException e) {
            System.out.println("删除news异常");
        }
        return 0;//如果添加异常 返回0
    }

    /**
     * 更新功能
     * @param admin
     * @return
     */
    public int update(AdminBean admin) {

        Connection conn = db.getConn(); //Conn代表mysql连接
        String sql = "update admin set admin.AdminName=?,AdminPwd=?,AdminType=?,AdminName=? where AdminID=?";
        // 使用jdbc预处理对象添加
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            //将新闻数据对象中数据依次绑定到sql命令中
            ps.setString(1, admin.getAdminName());
            ps.setString(2, admin.getAdminPwd());
            ps.setString(3, admin.getAdminType());
            ps.setString(4, admin.getLastLoginTime());
            ps.setInt(5, admin.getAdminID());
            return ps.executeUpdate(); //执行sql命令完成数据插入
        } catch (SQLException e) {
            System.out.print("插入news表异常");
        }
        return 0;//如果添加异常 返回0
    }

    /**
     * 获取新闻数据
     *
     * @param page 传进来页码 最小1
     * @return List一个新闻集合
     */
    public List<AdminBean> getList(int page) {
        Connection conn = db.getConn();
        String sql = "select * from admin limit ?,?";//第一个开始的行数 第二个是查询显示的条数
        List<AdminBean> list = new ArrayList<>();
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            // 固定一页显示10条数据
            ps.setInt(1, (page - 1) * 10);//page为1时行数是0 page为2时 10行
            ps.setInt(2, 10);//10表示显示10条数据
            ResultSet rs = ps.executeQuery(); //rs是数据查询结果集 全部是字符串
            while (rs.next()) {
                AdminBean admin = new AdminBean();//每轮循环生命一个新闻对象
                admin.setAdminName(rs.getString("AdminName"));//rs获取改行新闻ID 通过新闻对象封装方法设置新闻值
                admin.setAdminPwd(rs.getString("AdminPwd"));
                admin.setAdminType(rs.getInt("AdminType"));
                admin.setLastLoginTime(rs.getString("AdminLastLoginTime"));
                admin.setAdminID(rs.getInt("AdminID"));
                list.add(admin);//将设置好的新闻对象放入list中
            }
        } catch (SQLException e) {
            System.out.println("查询news表异常");
        }
        return list;//异常情况返回空集合
    }


    //分割线
    DBConnection DBConn = new DBConnection();
    public boolean CheckLogin(String s1, String s2) throws SQLException {
        Connection conn = DBConn.getConn(); //获取MySql数据连接
        Statement statement = conn.createStatement(); // 获取处理对象
        ResultSet rs = null; //声明结果集对象
        boolean OK  = true;
        String sql = "select * from admin where AdminName = '" + s1 + "' and AdminPwd = '" + s2 +  "'";
        rs = statement.executeQuery(sql); //执行sql查询
        if (!rs.next()) {    //如果没有查询到结果，则表示该用户不存在
            OK = false;
        }else {
            OK = true; //表示有该用户
            // todo 后期需要添加账户密码严格验证
        }
        return OK;
    }
}
